package edu.cibertec.sicsolutions.vfs.domain.votacion;

import java.io.Serializable;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.log4j.Logger;

import com.thoughtworks.xstream.XStream;

import edu.cibertec.sicsolutions.exception.DaoException;
import edu.cibertec.sicsolutions.exception.DomainException;
import edu.cibertec.sicsolutions.util.StringUtil;
import edu.cibertec.sicsolutions.vfs.dao.votacion.ConsolidadoDao;
import edu.cibertec.sicsolutions.vfs.spring.SpringContext;

/**
 * Domain Object of table CONSOLIDADO 
 * @author enrique.vargas
 *
 */
public class Consolidado implements Serializable {

	private static final Logger log = Logger.getLogger(Consolidado.class);
 	
	 
	public Consolidado(Integer codigo){
		this.codigo = codigo;
	}
	
	public Consolidado(){
	}
	
	/**
	 * Column: codigo, DataType: int
	 */
	private Integer codigo;
	/**
	 * Column: codigo_candidato, DataType: varchar
	 */
	private String codigoCandidato;
	/**
	 * Column: codigo_consulado, DataType: varchar
	 */
	private String codigoConsulado;
	/**
	 * Column: cantidad_votos_consulado, DataType: int
	 */
	private Integer cantidadVotosConsulado;
	
	private Candidato candidato;
	
	private Consulado consulado; 

	private Integer cantidadVotosTotal;

	public Integer getCodigo(){
		return codigo;
	}
	public void setCodigo(Integer codigo){
		this.codigo = codigo;
	}
	public String getCodigoCandidato(){
		return codigoCandidato;
	}
	public void setCodigoCandidato(String codigoCandidato){
		this.codigoCandidato = codigoCandidato;
	}
	public String getCodigoConsulado(){
		return codigoConsulado;
	}
	public void setCodigoConsulado(String codigoConsulado){
		this.codigoConsulado = codigoConsulado;
	}
	public Integer getCantidadVotosConsulado(){
		return cantidadVotosConsulado;
	}
	public void setCantidadVotosConsulado(Integer cantidadVotosConsulado){
		this.cantidadVotosConsulado = cantidadVotosConsulado;
	}
	public Integer getCantidadVotosTotal() {
		return cantidadVotosTotal;
	}
	public void setCantidadVotosTotal(Integer cantidadVotosTotal) {
		this.cantidadVotosTotal = cantidadVotosTotal;
	}
	public Candidato getCandidato() {
		return candidato;
	}

	public void setCandidato(Candidato candidato) {
		this.candidato = candidato;
	}
	
	public Consulado getConsulado() {
		return consulado;
	}

	public void setConsulado(Consulado consulado) {
		this.consulado = consulado;
	}
 
	/**
	 * This will create a JSON object and output to client. Get the data from
	 * database and display result to GUI
	 * Convert JSONObject
	 * @return
	 * @throws Exception
	 */
	public JSONObject toJSONObject() throws Exception{
		 
		JSONObject json = new JSONObject();
				    json.put("codigo", codigo);
  	    		    json.put("codigoCandidato", codigoCandidato);
  	    		    json.put("codigoConsulado", codigoConsulado);
  	    		    json.put("cantidadVotosConsulado", cantidadVotosConsulado);
  	    		    json.put("cantidadVotosTotal", cantidadVotosTotal);
  	    		    json.put("candidato", candidato);
  	    		    json.put("consulado", consulado);
		return json;
	}
	
	/**
	 * This will create a JSON object and output to client. Get the data from
	 * database and display result to GUI
	 * Convert JSONObject
	 * @param ArrayObjects 
	 * @return
	 * @throws Exception
	 */
	public static JSONObject toJSONObject(Consolidado[] consolidados) throws Exception{
		 
		JSONObject json = new JSONObject();
		json.put("count", consolidados.length);
		JSONArray jsonItems = new JSONArray();
		for (Consolidado consolidado : consolidados)  {
		  jsonItems.add(consolidado.toJSONObject());
		}
		json.put("arrayConsolidado", jsonItems);

		return json;
	}
	
}